home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / disgas / mntable.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-08  |  17.4 KB  |  569 lines

  1. /* MNTABLE.C   (c) S.Enjoji
  2.  *
  3.  * type    0:prefix, 1:0 operand, 2:1 operand, 3:2 operand, 4:3 oprand,
  4.  *         5:1-opr-no-tale, 6:2-opr-no-tale, 8:0F code, 9:undefined
  5.  * opsize  1:byte, 2:word or double word, 3:word
  6.  * dst,src 1:reg, 2:r/m, 3:sreg, 4:CRn reg, 5:DBn reg, 6:TRn reg,
  7.  *    0x10:AL, 0x11:CL, 0x12:DL, 0x13:BL, 0x14:AH, 0x15:CH, 0x16:DH, 0x17:BH,
  8.  *    0x10:AX, 0x11:CX, 0x12:DX, 0x13:BX, 0x14:SP, 0x15:BP, 0x16:SI, 0x17:DI,
  9.  *    0x18:ES, 0x19:CS, 0x1a:SS, 0x1b:DS, 0x1c:FS, 0x1d:GS, 0x1e:HS, 0x1f:IS,
  10.  *    0x20:(DX), 0x21:CL, 0x22:1,
  11.  *    0x80:immediate, 0x81:offset, 0x82:displacement, 0x83:sign-ext-imm8,
  12.  *    0x84:immediate byte, 0x85:immediate word:long
  13.  */
  14.  
  15. char null[] = "";
  16. char mov[] = "MOV";
  17. char push[] = "PUSH";
  18. char pop[] = "POP";
  19. char add[] = "ADD";
  20. char adc[] = "ADC";
  21. char sub[] = "SUB";
  22. char sbb[] = "SBB";
  23. char cmp[] = "CMP";
  24. char and[] = "AND";
  25. char or[] = "OR";
  26. char xor[] = "XOR";
  27. char inc[] = "INC";
  28. char dec[] = "DEC";
  29. char xchg[] = "XCHG";
  30. char test[] = "TEST";
  31.  
  32. char *multimn[7][8] = {
  33.     add,or,adc,sbb,and,sub,xor,cmp,
  34.     "ROL","ROR","RCL","RCR","SHL","SHR","SAL","SAR",
  35.     test,null,"NOT","NEG","MUL","IMUL","DIV","IDIV",
  36.     inc,dec,"CALL","LCALL","JMP","LJMP",push,null,
  37.     "SLDT","STR","LLDT","LTR","VERR","VERW",null,null,
  38.     "SGDT","SIDT","LGDT","LIDT","SMSW",null,"LMSW",null,
  39.     null,null,null,null,"BT","BTS","BTR","BTC"
  40. };
  41.  
  42. struct mnem {
  43.     char type;
  44.     char opsize;
  45.     char opra;
  46.     char oprb;
  47.     char oprc;
  48.     char dmy;
  49.     char *opcode;
  50. };
  51.  
  52. struct mnem mntab[] = {
  53. /* 00 */    {3,1,2,1,0,0,add},
  54. /* 01 */    {3,2,2,1,0,0,add},
  55. /* 02 */    {3,1,1,2,0,0,add},
  56. /* 03 */    {3,2,1,2,0,0,add},
  57. /* 04 */    {3,1,0x10,0x80,0,0,add},
  58. /* 05 */    {3,2,0x10,0x80,0,0,add},
  59. /* 06 */    {5,2,0x18,0,0,0,push},
  60. /* 07 */    {5,2,0x18,0,0,0,pop},
  61. /* 08 */    {3,1,2,1,0,0,or},
  62. /* 09 */    {3,2,2,1,0,0,or},
  63. /* 0A */    {3,1,1,2,0,0,or},
  64. /* 0B */    {3,2,1,2,0,0,or},
  65. /* 0C */    {3,1,0x10,0x80,0,0,or},
  66. /* 0D */    {3,2,0x10,0x80,0,0,or},
  67. /* 0E */    {5,2,0x19,0,0,0,push},
  68. /* 0F */    {8,0,0,0,0,0,null},
  69. /* 10 */    {3,1,2,1,0,0,adc},
  70. /* 11 */    {3,2,2,1,0,0,adc},
  71. /* 12 */    {3,1,1,2,0,0,adc},
  72. /* 13 */    {3,2,1,2,0,0,adc},
  73. /* 14 */    {3,1,0x10,0x80,0,0,adc},
  74. /* 15 */    {3,2,0x10,0x80,0,0,adc},
  75. /* 16 */    {5,2,0x1a,0,0,0,push},
  76. /* 17 */    {5,2,0x1a,0,0,0,pop},
  77. /* 18 */    {3,1,2,1,0,0,sbb},
  78. /* 19 */    {3,2,2,1,0,0,sbb},
  79. /* 1A */    {3,1,1,2,0,0,sbb},
  80. /* 1B */    {3,2,1,2,0,0,sbb},
  81. /* 1C */    {3,1,0x10,0x80,0,0,sbb},
  82. /* 1D */    {3,2,0x10,0x80,0,0,sbb},
  83. /* 1E */    {5,2,0x1b,0,0,0,push},
  84. /* 1F */    {5,2,0x1b,0,0,0,pop},
  85. /* 20 */    {3,1,2,1,0,0,and},
  86. /* 21 */    {3,2,2,1,0,0,and},
  87. /* 22 */    {3,1,1,2,0,0,and},
  88. /* 23 */    {3,2,1,2,0,0,and},
  89. /* 24 */    {3,1,0x10,0x80,0,0,and},
  90. /* 25 */    {3,2,0x10,0x80,0,0,and},
  91. /* 26 */    {0,0,0,0,0,0,"ES:"},
  92. /* 27 */    {1,0,0,0,0,0,"DAA"},
  93. /* 28 */    {3,1,2,1,0,0,sub},
  94. /* 29 */    {3,2,2,1,0,0,sub},
  95. /* 2A */    {3,1,1,2,0,0,sub},
  96. /* 2B */    {3,2,1,2,0,0,sub},
  97. /* 2C */    {3,1,0x10,0x80,0,0,sub},
  98. /* 2D */    {3,2,0x10,0x80,0,0,sub},
  99. /* 2E */    {0,0,0,0,0,0,"CS:"},
  100. /* 2F */    {1,0,0,0,0,0,"DAS"},
  101. /* 30 */    {3,1,2,1,0,0,xor},
  102. /* 31 */    {3,2,2,1,0,0,xor},
  103. /* 32 */    {3,1,1,2,0,0,xor},
  104. /* 33 */    {3,2,1,2,0,0,xor},
  105. /* 34 */    {3,1,0x10,0x80,0,0,xor},
  106. /* 35 */    {3,2,0x10,0x80,0,0,xor},
  107. /* 36 */    {0,0,0,0,0,0,"SS:"},
  108. /* 37 */    {1,0,0,0,0,0,"AAA"},
  109. /* 38 */    {3,1,2,1,0,0,cmp},
  110. /* 39 */    {3,2,2,1,0,0,cmp},
  111. /* 3A */    {3,1,1,2,0,0,cmp},
  112. /* 3B */    {3,2,1,2,0,0,cmp},
  113. /* 3C */    {3,1,0x10,0x80,0,0,cmp},
  114. /* 3D */    {3,2,0x10,0x80,0,0,cmp},
  115. /* 3E */    {0,0,0,0,0,0,"DS:"},
  116. /* 3F */    {1,0,0,0,0,0,"AAS"},
  117. /* 40 */    {2,2,0x10,0,0,0,inc},
  118. /* 41 */    {2,2,0x11,0,0,0,inc},
  119. /* 42 */    {2,2,0x12,0,0,0,inc},
  120. /* 43 */    {2,2,0x13,0,0,0,inc},
  121. /* 44 */    {2,2,0x14,0,0,0,inc},
  122. /* 45 */    {2,2,0x15,0,0,0,inc},
  123. /* 46 */    {2,2,0x16,0,0,0,inc},
  124. /* 47 */    {2,2,0x17,0,0,0,inc},
  125. /* 48 */    {2,2,0x10,0,0,0,dec},
  126. /* 49 */    {2,2,0x11,0,0,0,dec},
  127. /* 4A */    {2,2,0x12,0,0,0,dec},
  128. /* 4B */    {2,2,0x13,0,0,0,dec},
  129. /* 4C */    {2,2,0x14,0,0,0,dec},
  130. /* 4D */    {2,2,0x15,0,0,0,dec},
  131. /* 4E */    {2,2,0x16,0,0,0,dec},
  132. /* 4F */    {2,2,0x17,0,0,0,dec},
  133. /* 50 */    {2,2,0x10,0,0,0,push},
  134. /* 51 */    {2,2,0x11,0,0,0,push},
  135. /* 52 */    {2,2,0x12,0,0,0,push},
  136. /* 53 */    {2,2,0x13,0,0,0,push},
  137. /* 54 */    {2,2,0x14,0,0,0,push},
  138. /* 55 */    {2,2,0x15,0,0,0,push},
  139. /* 56 */    {2,2,0x16,0,0,0,push},
  140. /* 57 */    {2,2,0x17,0,0,0,push},
  141. /* 58 */    {2,2,0x10,0,0,0,pop},
  142. /* 59 */    {2,2,0x11,0,0,0,pop},
  143. /* 5A */    {2,2,0x12,0,0,0,pop},
  144. /* 5B */    {2,2,0x13,0,0,0,pop},
  145. /* 5C */    {2,2,0x14,0,0,0,pop},
  146. /* 5D */    {2,2,0x15,0,0,0,pop},
  147. /* 5E */    {2,2,0x16,0,0,0,pop},
  148. /* 5F */    {2,2,0x17,0,0,0,pop},
  149. /* 60 */    {1,0,0,0,0,0,"PUSHA"},
  150. /* 61 */    {1,0,0,0,0,0,"POPA"},
  151. /* 62 */    {3,2,1,2,0,0,"BOUND"},
  152. /* 63 */    {3,3,2,1,0,0,"ARPL"},
  153. /* 64 */    {0,0,0,0,0,0,"FS:"},
  154. /* 65 */    {0,0,0,0,0,0,"GS:"},
  155. /* 66 */    {0,0,0,0,0,0,"OPSIZE"},
  156. /* 67 */    {0,0,0,0,0,0,"ADSIZE"},
  157. /* 68 */    {2,2,0x80,0,0,0,push},
  158. /* 69 */    {4,2,1,2,0x80,0,"IMUL"},
  159. /* 6A */    {2,2,0x83,0,0,0,push},
  160. /* 6B */    {4,2,1,2,0x83,0,"IMUL"},
  161. /* 6C */    {1,0,0,0,0,0,"INSB"},
  162. /* 6D */    {1,0,0,0,0,0,"INSL(W)"},
  163. /* 6E */    {1,0,0,0,0,0,"OUTSB"},
  164. /* 6F */    {1,0,0,0,0,0,"OUTSL(W)"},
  165. /* 70 */    {5,1,0x82,0,0,0,"JO"},
  166. /* 71 */    {5,1,0x82,0,0,0,"JNO"},
  167. /* 72 */    {5,1,0x82,0,0,0,"JB"},
  168. /* 73 */    {5,1,0x82,0,0,0,"JAE"},
  169. /* 74 */    {5,1,0x82,0,0,0,"JE"},
  170. /* 75 */    {5,1,0x82,0,0,0,"JNE"},
  171. /* 76 */    {5,1,0x82,0,0,0,"JBE"},
  172. /* 77 */    {5,1,0x82,0,0,0,"JA"},
  173. /* 78 */    {5,1,0x82,0,0,0,"JS"},
  174. /* 79 */    {5,1,0x82,0,0,0,"JNS"},
  175. /* 7A */    {5,1,0x82,0,0,0,"JP"},
  176. /* 7B */    {5,1,0x82,0,0,0,"JNP"},
  177. /* 7C */    {5,1,0x82,0,0,0,"JL"},
  178. /* 7D */    {5,1,0x82,0,0,0,"JGE"},
  179. /* 7E */    {5,1,0x82,0,0,0,"JLE"},
  180. /* 7F */    {5,1,0x82,0,0,0,"JG"},
  181. /* 80 */    {10,1,2,0x80,0,0,null},
  182. /* 81 */    {10,2,2,0x80,0,0,null},
  183. /* 82 */    {9,0,0,0,0,0,null},
  184. /* 83 */    {10,2,2,0x83,0,0,null},
  185. /* 84 */    {3,1,2,1,0,0,test},
  186. /* 85 */    {3,2,2,1,0,0,test},
  187. /* 86 */    {3,1,2,1,0,0,xchg},
  188. /* 87 */    {3,2,2,1,0,0,xchg},
  189. /* 88 */    {3,1,2,1,0,0,mov},
  190. /* 89 */    {3,2,2,1,0,0,mov},
  191. /* 8A */    {3,1,1,2,0,0,mov},
  192. /* 8B */    {3,2,1,2,0,0,mov},
  193. /* 8C */    {3,3,2,3,0,0,mov},
  194. /* 8D */    {3,2,1,2,0,0,"LEA"},
  195. /* 8E */    {3,3,3,2,0,0,mov},
  196. /* 8F */    {2,2,2,0,0,0,pop},
  197. /* 90 */    {1,0,0,0,0,0,"NOP"},
  198. /* 91 */    {3,2,0x10,0x11,0,0,xchg},
  199. /* 92 */    {3,2,0x10,0x12,0,0,xchg},
  200. /* 93 */    {3,2,0x10,0x13,0,0,xchg},
  201. /* 94 */    {3,2,0x10,0x14,0,0,xchg},
  202. /* 95 */    {3,2,0x10,0x15,0,0,xchg},
  203. /* 96 */    {3,2,0x10,0x16,0,0,xchg},
  204. /* 97 */    {3,2,0x10,0x17,0,0,xchg},
  205. /* 98 */    {1,0,0,0,0,0,"CWDE(CBW)"},
  206. /* 99 */    {1,0,0,0,0,0,"CDQ(CWD)"},
  207. /* 9A */    {5,2,0x85,0,0,0,"LCALL"},
  208. /* 9B */    {1,0,0,0,0,0,"WAIT"},
  209. /* 9C */    {1,0,0,0,0,0,"PUSHF"},
  210. /* 9D */    {1,0,0,0,0,0,"POPF"},
  211. /* 9E */    {1,0,0,0,0,0,"SAHF"},
  212. /* 9F */    {1,0,0,0,0,0,"LAHF"},
  213. /* A0 */    {3,1,0x10,0x81,0,0,mov},
  214. /* A1 */    {3,2,0x10,0x81,0,0,mov},
  215. /* A2 */    {3,1,0x81,0x10,0,0,mov},
  216. /* A3 */    {3,2,0x81,0x10,0,0,mov},
  217. /* A4 */    {1,0,0,0,0,0,"MOVSB"},
  218. /* A5 */    {1,0,0,0,0,0,"MOVSL(W)"},
  219. /* A6 */    {1,0,0,0,0,0,"CMPSB"},
  220. /* A7 */    {1,0,0,0,0,0,"CMPSL(W)"},
  221. /* A8 */    {3,1,0x10,0x80,0,0,test},
  222. /* A9 */    {3,2,0x10,0x80,0,0,test},
  223. /* AA */    {1,0,0,0,0,0,"STOSB"},
  224. /* AB */    {1,0,0,0,0,0,"STOSL(W)"},
  225. /* AC */    {1,0,0,0,0,0,"LODSB"},
  226. /* AD */    {1,0,0,0,0,0,"LODSL(W)"},
  227. /* AE */    {1,0,0,0,0,0,"SCASB"},
  228. /* AF */    {1,0,0,0,0,0,"SCASL(W)"},
  229. /* B0 */    {3,1,0x10,0x80,0,0,mov},
  230. /* B1 */    {3,1,0x11,0x80,0,0,mov},
  231. /* B2 */    {3,1,0x12,0x80,0,0,mov},
  232. /* B3 */    {3,1,0x13,0x80,0,0,mov},
  233. /* B4 */    {3,1,0x14,0x80,0,0,mov},
  234. /* B5 */    {3,1,0x15,0x80,0,0,mov},
  235. /* B6 */    {3,1,0x16,0x80,0,0,mov},
  236. /* B7 */    {3,1,0x17,0x80,0,0,mov},
  237. /* B8 */    {3,2,0x10,0x80,0,0,mov},
  238. /* B9 */    {3,2,0x11,0x80,0,0,mov},
  239. /* BA */    {3,2,0x12,0x80,0,0,mov},
  240. /* BB */    {3,2,0x13,0x80,0,0,mov},
  241. /* BC */    {3,2,0x14,0x80,0,0,mov},
  242. /* BD */    {3,2,0x15,0x80,0,0,mov},
  243. /* BE */    {3,2,0x16,0x80,0,0,mov},
  244. /* BF */    {3,2,0x17,0x80,0,0,mov},
  245. /* C0 */    {11,1,2,0x80,0,0,null},
  246. /* C1 */    {11,2,2,0x84,0,0,null},
  247. /* C2 */    {5,3,0x80,0,0,0,"RET"},
  248. /* C3 */    {1,0,0,0,0,0,"RET"},
  249. /* C4 */    {3,2,1,2,0,0,"LES"},
  250. /* C5 */    {3,2,1,2,0,0,"LDS"},
  251. /* C6 */    {3,1,2,0x80,0,0,mov},
  252. /* C7 */    {3,2,2,0x80,0,0,mov},
  253. /* C8 */    {6,2,0x80,0x80,0,0,"ENTER"},
  254. /* C9 */    {1,0,0,0,0,0,"LEAVE"},
  255. /* CA */    {5,3,0x80,0,0,0,"LRET"},
  256. /* CB */    {1,0,0,0,0,0,"LRET"},
  257. /* CC */    {1,0,0,0,0,0,"INT3"},
  258. /* CD */    {5,1,0x80,0,0,0,"INT"},
  259. /* CE */    {1,0,0,0,0,0,"INTO"},
  260. /* CF */    {1,0,0,0,0,0,"IRET"},
  261. /* D0 */    {11,1,2,0x22,0,0,null},
  262. /* D1 */    {11,2,2,0x22,0,0,null},
  263. /* D2 */    {11,1,2,0x21,0,0,null},
  264. /* D3 */    {11,2,2,0x21,0,0,null},
  265. /* D4 */    {5,1,0x80,0,0,0,"AAM"},
  266. /* D5 */    {5,1,0x80,0,0,0,"AAD"},
  267. /* D6 */    {9,0,0,0,0,0,null},
  268. /* D7 */    {1,0,0,0,0,0,"XLATB"},
  269. /* D8 */    {9,0,0,0,0,0,null},
  270. /* D9 */    {9,0,0,0,0,0,null},
  271. /* DA */    {9,0,0,0,0,0,null},
  272. /* DB */    {9,0,0,0,0,0,null},
  273. /* DC */    {9,0,0,0,0,0,null},
  274. /* DD */    {9,0,0,0,0,0,null},
  275. /* DE */    {9,0,0,0,0,0,null},
  276. /* DF */    {9,0,0,0,0,0,null},
  277. /* E0 */    {5,1,0x82,0,0,0,"LOOPNZ"},
  278. /* E1 */    {5,1,0x82,0,0,0,"LOOPZ"},
  279. /* E2 */    {5,1,0x82,0,0,0,"LOOP"},
  280. /* E3 */    {5,1,0x82,0,0,0,"JECXZ"},
  281. /* E4 */    {3,1,0x10,0x80,0,0,"IN"},
  282. /* E5 */    {3,2,0x10,0x80,0,0,"IN"},
  283. /* E6 */    {3,1,0x80,0x10,0,0,"OUT"},
  284. /* E7 */    {3,2,0x80,0x10,0,0,"OUT"},
  285. /* E8 */    {5,2,0x82,0,0,0,"CALL"},
  286. /* E9 */    {5,2,0x82,0,0,0,"JMP"},
  287. /* EA */    {5,2,0x85,0,0,0,"LJMP"},
  288. /* EB */    {5,1,0x82,0,0,0,"JMP"},
  289. /* EC */    {3,1,0x10,0x20,0,0,"IN"},
  290. /* ED */    {3,2,0x10,0x20,0,0,"IN"},
  291. /* EE */    {3,1,0x20,0x10,0,0,"OUT"},
  292. /* EF */    {3,2,0x20,0x10,0,0,"OUT"},
  293. /* F0 */    {0,0,0,0,0,0,"LOCK"},
  294. /* F1 */    {9,0,0,0,0,0,null},
  295. /* F2 */    {0,0,0,0,0,0,"REPNZ"},
  296. /* F3 */    {0,0,0,0,0,0,"REP(Z)"},
  297. /* F4 */    {1,0,0,0,0,0,"HLT"},
  298. /* F5 */    {1,0,0,0,0,0,"CMC"},
  299. /* F6 */    {12,1,2,0x80,0,0,null},
  300. /* F7 */    {12,2,2,0x80,0,0,null},
  301. /* F8 */    {1,0,0,0,0,0,"CLC"},
  302. /* F9 */    {1,0,0,0,0,0,"STC"},
  303. /* FA */    {1,0,0,0,0,0,"CLI"},
  304. /* FB */    {1,0,0,0,0,0,"STI"},
  305. /* FC */    {1,0,0,0,0,0,"CLD"},
  306. /* FD */    {1,0,0,0,0,0,"STD"},
  307. /* FE */    {13,1,2,0,0,0,null},
  308. /* FF */    {13,2,2,0,0,0,null}
  309. };
  310.  
  311. struct mnem mn0ftab[] = {
  312. /* 00 */    {14,2,2,0,0,0,null},
  313. /* 01 */    {15,2,2,0,0,0,null},
  314. /* 02 */    {3,2,1,2,0,0,"LAR"},
  315. /* 03 */    {3,2,1,2,0,0,"LSL"},
  316. /* 04 */    {9,0,0,0,0,0,null},
  317. /* 05 */    {9,0,0,0,0,0,null},
  318. /* 06 */    {1,0,0,0,0,0,"CLTS"},
  319. /* 07 */    {9,0,0,0,0,0,null},
  320. /* 08 */    {9,0,0,0,0,0,null},
  321. /* 09 */    {9,0,0,0,0,0,null},
  322. /* 0A */    {9,0,0,0,0,0,null},
  323. /* 0B */    {9,0,0,0,0,0,null},
  324. /* 0C */    {9,0,0,0,0,0,null},
  325. /* 0D */    {9,0,0,0,0,0,null},
  326. /* 0E */    {9,0,0,0,0,0,null},
  327. /* 0F */    {9,0,0,0,0,0,null},
  328. /* 10 */    {9,0,0,0,0,0,null},
  329. /* 11 */    {9,0,0,0,0,0,null},
  330. /* 12 */    {9,0,0,0,0,0,null},
  331. /* 13 */    {9,0,0,0,0,0,null},
  332. /* 14 */    {9,0,0,0,0,0,null},
  333. /* 15 */    {9,0,0,0,0,0,null},
  334. /* 16 */    {9,0,0,0,0,0,null},
  335. /* 17 */    {9,0,0,0,0,0,null},
  336. /* 18 */    {9,0,0,0,0,0,null},
  337. /* 19 */    {9,0,0,0,0,0,null},
  338. /* 1A */    {9,0,0,0,0,0,null},
  339. /* 1B */    {9,0,0,0,0,0,null},
  340. /* 1C */    {9,0,0,0,0,0,null},
  341. /* 1D */    {9,0,0,0,0,0,null},
  342. /* 1E */    {9,0,0,0,0,0,null},
  343. /* 1F */    {9,0,0,0,0,0,null},
  344. /* 20 */    {3,2,2,4,0,0,mov},
  345. /* 21 */    {3,2,2,5,0,0,mov},
  346. /* 22 */    {3,2,4,2,0,0,mov},
  347. /* 23 */    {3,2,5,2,0,0,mov},
  348. /* 24 */    {3,2,2,6,0,0,mov},
  349. /* 25 */    {9,0,0,0,0,0,null},
  350. /* 26 */    {3,2,6,2,0,0,mov},
  351. /* 27 */    {9,0,0,0,0,0,null},
  352. /* 28 */    {9,0,0,0,0,0,null},
  353. /* 29 */    {9,0,0,0,0,0,null},
  354. /* 2A */    {9,0,0,0,0,0,null},
  355. /* 2B */    {9,0,0,0,0,0,null},
  356. /* 2C */    {9,0,0,0,0,0,null},
  357. /* 2D */    {9,0,0,0,0,0,null},
  358. /* 2E */    {9,0,0,0,0,0,null},
  359. /* 2F */    {9,0,0,0,0,0,null},
  360. /* 30 */    {9,0,0,0,0,0,null},
  361. /* 31 */    {9,0,0,0,0,0,null},
  362. /* 32 */    {9,0,0,0,0,0,null},
  363. /* 33 */    {9,0,0,0,0,0,null},
  364. /* 34 */    {9,0,0,0,0,0,null},
  365. /* 35 */    {9,0,0,0,0,0,null},
  366. /* 36 */    {9,0,0,0,0,0,null},
  367. /* 37 */    {9,0,0,0,0,0,null},
  368. /* 38 */    {9,0,0,0,0,0,null},
  369. /* 39 */    {9,0,0,0,0,0,null},
  370. /* 3A */    {9,0,0,0,0,0,null},
  371. /* 3B */    {9,0,0,0,0,0,null},
  372. /* 3C */    {9,0,0,0,0,0,null},
  373. /* 3D */    {9,0,0,0,0,0,null},
  374. /* 3E */    {9,0,0,0,0,0,null},
  375. /* 3F */    {9,0,0,0,0,0,null},
  376. /* 40 */    {9,0,0,0,0,0,null},
  377. /* 41 */    {9,0,0,0,0,0,null},
  378. /* 42 */    {9,0,0,0,0,0,null},
  379. /* 43 */    {9,0,0,0,0,0,null},
  380. /* 44 */    {9,0,0,0,0,0,null},
  381. /* 45 */    {9,0,0,0,0,0,null},
  382. /* 46 */    {9,0,0,0,0,0,null},
  383. /* 47 */    {9,0,0,0,0,0,null},
  384. /* 48 */    {9,0,0,0,0,0,null},
  385. /* 49 */    {9,0,0,0,0,0,null},
  386. /* 4A */    {9,0,0,0,0,0,null},
  387. /* 4B */    {9,0,0,0,0,0,null},
  388. /* 4C */    {9,0,0,0,0,0,null},
  389. /* 4D */    {9,0,0,0,0,0,null},
  390. /* 4E */    {9,0,0,0,0,0,null},
  391. /* 4F */    {9,0,0,0,0,0,null},
  392. /* 50 */    {9,0,0,0,0,0,null},
  393. /* 51 */    {9,0,0,0,0,0,null},
  394. /* 52 */    {9,0,0,0,0,0,null},
  395. /* 53 */    {9,0,0,0,0,0,null},
  396. /* 54 */    {9,0,0,0,0,0,null},
  397. /* 55 */    {9,0,0,0,0,0,null},
  398. /* 56 */    {9,0,0,0,0,0,null},
  399. /* 57 */    {9,0,0,0,0,0,null},
  400. /* 58 */    {9,0,0,0,0,0,null},
  401. /* 59 */    {9,0,0,0,0,0,null},
  402. /* 5A */    {9,0,0,0,0,0,null},
  403. /* 5B */    {9,0,0,0,0,0,null},
  404. /* 5C */    {9,0,0,0,0,0,null},
  405. /* 5D */    {9,0,0,0,0,0,null},
  406. /* 5E */    {9,0,0,0,0,0,null},
  407. /* 5F */    {9,0,0,0,0,0,null},
  408. /* 60 */    {9,0,0,0,0,0,null},
  409. /* 61 */    {9,0,0,0,0,0,null},
  410. /* 62 */    {9,0,0,0,0,0,null},
  411. /* 63 */    {9,0,0,0,0,0,null},
  412. /* 64 */    {9,0,0,0,0,0,null},
  413. /* 65 */    {9,0,0,0,0,0,null},
  414. /* 66 */    {9,0,0,0,0,0,null},
  415. /* 67 */    {9,0,0,0,0,0,null},
  416. /* 68 */    {9,0,0,0,0,0,null},
  417. /* 69 */    {9,0,0,0,0,0,null},
  418. /* 6A */    {9,0,0,0,0,0,null},
  419. /* 6B */    {9,0,0,0,0,0,null},
  420. /* 6C */    {9,0,0,0,0,0,null},
  421. /* 6D */    {9,0,0,0,0,0,null},
  422. /* 6E */    {9,0,0,0,0,0,null},
  423. /* 6F */    {9,0,0,0,0,0,null},
  424. /* 70 */    {9,0,0,0,0,0,null},
  425. /* 71 */    {9,0,0,0,0,0,null},
  426. /* 72 */    {9,0,0,0,0,0,null},
  427. /* 73 */    {9,0,0,0,0,0,null},
  428. /* 74 */    {9,0,0,0,0,0,null},
  429. /* 75 */    {9,0,0,0,0,0,null},
  430. /* 76 */    {9,0,0,0,0,0,null},
  431. /* 77 */    {9,0,0,0,0,0,null},
  432. /* 78 */    {9,0,0,0,0,0,null},
  433. /* 79 */    {9,0,0,0,0,0,null},
  434. /* 7A */    {9,0,0,0,0,0,null},
  435. /* 7B */    {9,0,0,0,0,0,null},
  436. /* 7C */    {9,0,0,0,0,0,null},
  437. /* 7D */    {9,0,0,0,0,0,null},
  438. /* 7E */    {9,0,0,0,0,0,null},
  439. /* 7F */    {9,0,0,0,0,0,null},
  440. /* 80 */    {5,2,0x82,0,0,0,"JO"},
  441. /* 81 */    {5,2,0x82,0,0,0,"JNO"},
  442. /* 82 */    {5,2,0x82,0,0,0,"JB"},
  443. /* 83 */    {5,2,0x82,0,0,0,"JAE"},
  444. /* 84 */    {5,2,0x82,0,0,0,"JE"},
  445. /* 85 */    {5,2,0x82,0,0,0,"JNE"},
  446. /* 86 */    {5,2,0x82,0,0,0,"JBE"},
  447. /* 87 */    {5,2,0x82,0,0,0,"JA"},
  448. /* 88 */    {5,2,0x82,0,0,0,"JS"},
  449. /* 89 */    {5,2,0x82,0,0,0,"JNS"},
  450. /* 8A */    {5,2,0x82,0,0,0,"JP"},
  451. /* 8B */    {5,2,0x82,0,0,0,"JNP"},
  452. /* 8C */    {5,2,0x82,0,0,0,"JL"},
  453. /* 8D */    {5,2,0x82,0,0,0,"JGE"},
  454. /* 8E */    {5,2,0x82,0,0,0,"JLE"},
  455. /* 8F */    {5,2,0x82,0,0,0,"JG"},
  456. /* 90 */    {5,1,2,0,0,0,"SETO"},
  457. /* 91 */    {5,1,2,0,0,0,"SETNO"},
  458. /* 92 */    {5,1,2,0,0,0,"SETB"},
  459. /* 93 */    {5,1,2,0,0,0,"SETAE"},
  460. /* 94 */    {5,1,2,0,0,0,"SETE"},
  461. /* 95 */    {5,1,2,0,0,0,"SETNE"},
  462. /* 96 */    {5,1,2,0,0,0,"SETBE"},
  463. /* 97 */    {5,1,2,0,0,0,"SETA"},
  464. /* 98 */    {5,1,2,0,0,0,"SETS"},
  465. /* 99 */    {5,1,2,0,0,0,"SETNS"},
  466. /* 9A */    {5,1,2,0,0,0,"SETP"},
  467. /* 9B */    {5,1,2,0,0,0,"SETNP"},
  468. /* 9C */    {5,1,2,0,0,0,"SETL"},
  469. /* 9D */    {5,1,2,0,0,0,"SETGE"},
  470. /* 9E */    {5,1,2,0,0,0,"SETLE"},
  471. /* 9F */    {5,1,2,0,0,0,"SETG"},
  472. /* A0 */    {5,2,0x1c,0,0,0,push},
  473. /* A1 */    {5,2,0x1c,0,0,0,pop},
  474. /* A2 */    {9,0,0,0,0,0,null},
  475. /* A3 */    {6,2,2,1,0,0,"BT"},
  476. /* A4 */    {4,2,2,1,0x84,0,"SHLD"},
  477. /* A5 */    {4,2,2,1,0x21,0,"SHLD"},
  478. /* A6 */    {9,0,0,0,0,0,null},
  479. /* A7 */    {9,0,0,0,0,0,null},
  480. /* A8 */    {5,2,0x1d,0,0,0,push},
  481. /* A9 */    {5,2,0x1d,0,0,0,pop},
  482. /* AA */    {9,0,0,0,0,0,null},
  483. /* AB */    {6,2,2,1,0,0,"BTS"},
  484. /* AC */    {4,2,2,1,0x84,0,"SHRD"},
  485. /* AD */    {4,2,2,1,0x21,0,"SHRD"},
  486. /* AE */    {9,0,0,0,0,0,null},
  487. /* AF */    {3,2,1,2,0,0,"IMUL"},
  488. /* B0 */    {9,0,0,0,0,0,null},
  489. /* B1 */    {9,0,0,0,0,0,null},
  490. /* B2 */    {6,2,1,2,0,0,"LSS"},
  491. /* B3 */    {6,2,2,1,0,0,"BTR"},
  492. /* B4 */    {6,2,1,2,0,0,"LFS"},
  493. /* B5 */    {6,2,1,2,0,0,"LGS"},
  494. /* B6 */    {3,2,1,2,0,0,"MOVZXB"},
  495. /* B7 */    {3,2,1,2,0,0,"MOVZXW"},
  496. /* B8 */    {9,0,0,0,0,0,null},
  497. /* B9 */    {9,0,0,0,0,0,null},
  498. /* BA */    {16,2,2,0x84,0,0,null},
  499. /* BB */    {6,2,2,1,0,0,"BTC"},
  500. /* BC */    {6,2,1,2,0,0,"BSF"},
  501. /* BD */    {6,2,1,2,0,0,"BSR"},
  502. /* BE */    {3,2,1,2,0,0,"MOVSXB"},
  503. /* BF */    {3,2,1,2,0,0,"MOVSXW"},
  504. /* C0 */    {9,0,0,0,0,0,null},
  505. /* C1 */    {9,0,0,0,0,0,null},
  506. /* C2 */    {9,0,0,0,0,0,null},
  507. /* C3 */    {9,0,0,0,0,0,null},
  508. /* C4 */    {9,0,0,0,0,0,null},
  509. /* C5 */    {9,0,0,0,0,0,null},
  510. /* C6 */    {9,0,0,0,0,0,null},
  511. /* C7 */    {9,0,0,0,0,0,null},
  512. /* C8 */    {9,0,0,0,0,0,null},
  513. /* C9 */    {9,0,0,0,0,0,null},
  514. /* CA */    {9,0,0,0,0,0,null},
  515. /* CB */    {9,0,0,0,0,0,null},
  516. /* CC */    {9,0,0,0,0,0,null},
  517. /* CD */    {9,0,0,0,0,0,null},
  518. /* CE */    {9,0,0,0,0,0,null},
  519. /* CF */    {9,0,0,0,0,0,null},
  520. /* D0 */    {9,0,0,0,0,0,null},
  521. /* D1 */    {9,0,0,0,0,0,null},
  522. /* D2 */    {9,0,0,0,0,0,null},
  523. /* D3 */    {9,0,0,0,0,0,null},
  524. /* D4 */    {9,0,0,0,0,0,null},
  525. /* D5 */    {9,0,0,0,0,0,null},
  526. /* D6 */    {9,0,0,0,0,0,null},
  527. /* D7 */    {9,0,0,0,0,0,null},
  528. /* D8 */    {9,0,0,0,0,0,null},
  529. /* D9 */    {9,0,0,0,0,0,null},
  530. /* DA */    {9,0,0,0,0,0,null},
  531. /* DB */    {9,0,0,0,0,0,null},
  532. /* DC */    {9,0,0,0,0,0,null},
  533. /* DD */    {9,0,0,0,0,0,null},
  534. /* DE */    {9,0,0,0,0,0,null},
  535. /* DF */    {9,0,0,0,0,0,null},
  536. /* E0 */    {9,0,0,0,0,0,null},
  537. /* E1 */    {9,0,0,0,0,0,null},
  538. /* E2 */    {9,0,0,0,0,0,null},
  539. /* E3 */    {9,0,0,0,0,0,null},
  540. /* E4 */    {9,0,0,0,0,0,null},
  541. /* E5 */    {9,0,0,0,0,0,null},
  542. /* E6 */    {9,0,0,0,0,0,null},
  543. /* E7 */    {9,0,0,0,0,0,null},
  544. /* E8 */    {9,0,0,0,0,0,null},
  545. /* E9 */    {9,0,0,0,0,0,null},
  546. /* EA */    {9,0,0,0,0,0,null},
  547. /* EB */    {9,0,0,0,0,0,null},
  548. /* EC */    {9,0,0,0,0,0,null},
  549. /* ED */    {9,0,0,0,0,0,null},
  550. /* EE */    {9,0,0,0,0,0,null},
  551. /* EF */    {9,0,0,0,0,0,null},
  552. /* F0 */    {9,0,0,0,0,0,null},
  553. /* F1 */    {9,0,0,0,0,0,null},
  554. /* F2 */    {9,0,0,0,0,0,null},
  555. /* F3 */    {9,0,0,0,0,0,null},
  556. /* F4 */    {9,0,0,0,0,0,null},
  557. /* F5 */    {9,0,0,0,0,0,null},
  558. /* F6 */    {9,0,0,0,0,0,null},
  559. /* F7 */    {9,0,0,0,0,0,null},
  560. /* F8 */    {9,0,0,0,0,0,null},
  561. /* F9 */    {9,0,0,0,0,0,null},
  562. /* FA */    {9,0,0,0,0,0,null},
  563. /* FB */    {9,0,0,0,0,0,null},
  564. /* FC */    {9,0,0,0,0,0,null},
  565. /* FD */    {9,0,0,0,0,0,null},
  566. /* FE */    {9,0,0,0,0,0,null},
  567. /* FF */    {9,0,0,0,0,0,null}
  568. };
  569.